#ifndef _SAMPLE_CLASS_H_
#define _SAMPLE_CLASS_H_

#include <vector>
#include <string>
#include <stdio.h>

#define DEF_1 1
#define OS_NAME "Linux"

const int MyData1=100;
const int MyData2=200;

using namespace std;

typedef enum {
    AA,
    BB
} myEnum_t;


class SampleClass
{
public:

    typedef enum {
        CC,
        DD
    } myAnother_t;

    SampleClass();
    /*!
     * Method 1
     */
    string meth1();

    ///
    /// Method 2 description
    ///
    /// @param v1 Variable 1
    ///
    int meth2(int v1);

    /**
     * Method 3 description
     *
     * \param v1 Variable 1
     * \param v2 Variable 2
     */
    void meth3(const string & v1, vector<string> & v2);

    /**********************************
     * Method 4 description
     *
     * @return Return value
     *********************************/
    unsigned int meth4();
private:
    void * meth5(){return NULL};

    /// prop1 description
    string prop1;
    //! prop5 description
    int prop5;
};


namespace Alpha
{
    class AlphaClass
    {
    public:
        AlphaClass();

        void alphaMethod();

        string alphaString;
    };

    namespace Omega
    {
        class OmegaClass
        {
        public:
            OmegaClass();

            string omegaString;
        };
    };
}

int sampleFreeFunction(int i)
{
    return i + 1;
}

int anotherFreeFunction(void);


#endif